🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / feature / node / src / commonMain / kotlin / org / meshtastic / feature / node / metrics / PositionLogScreens.kt
Displaying Raw • Download
feature/node/src/commonMain/kotlin/org/meshtastic/feature/node/metrics/PositionLogScreens.kt d9b9ce6e8a43ada377ba1e6196d3d3352de20168 (d9b9ce6e) Text, 4.38 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.feature.node.metrics
Tff7b72import T7ee787androidx.compose.foundation.layout.fillMaxSize
Tff7b72import T7ee787androidx.compose.foundation.lazy.LazyColumn
Tff7b72import T7ee787androidx.compose.foundation.lazy.itemsIndexed
Tff7b72import T7ee787androidx.compose.material3.Icon
Tff7b72import T7ee787androidx.compose.material3.IconButton
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.runtime.getValue
Tff7b72import T7ee787androidx.lifecycle.compose.collectAsStateWithLifecycle
Tff7b72import T7ee787org.jetbrains.compose.resources.stringResource
Tff7b72import T7ee787org.meshtastic.core.resources.Res
Tff7b72import T7ee787org.meshtastic.core.resources.clear
Tff7b72import T7ee787org.meshtastic.core.resources.export_gpx
Tff7b72import T7ee787org.meshtastic.core.resources.position_log
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Delete
Tff7b72import T7ee787org.meshtastic.core.ui.icon.FileDownload
Tff7b72import T7ee787org.meshtastic.core.ui.icon.MeshtasticIcons
Tff7b72import T7ee787org.meshtastic.core.ui.icon.Refresh
Tff7b72import T7ee787org.meshtastic.core.ui.util.LocalNodeTrackMapProvider
Tff7b72import T7ee787org.meshtastic.core.ui.util.rememberSaveFileLauncher
Tf0883e@Composable
Tff7b72fun Td2a8ffPositionLogScreenTb4b4b4(Te6edf3viewModelTb4b4b4: Te6edf3MetricsViewModelTb4b4b4, Te6edf3onNavigateUpTb4b4b4: Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3state Tff7b72by Te6edf3viewModelTb4b4b4.Te6edf3stateTb4b4b4.Te6edf3collectAsStateWithLifecycleTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3positions Tff7b72= Te6edf3stateTb4b4b4.Te6edf3positionLogs
Tff7b72val Te6edf3exportPositionLauncher Tff7b72= Te6edf3rememberSaveFileLauncher Tb4b4b4{ Te6edf3uri Tff7b72-Tff7b72> Te6edf3viewModelTb4b4b4.Te6edf3savePositionCSVTb4b4b4(Te6edf3uriTb4b4b4, Te6edf3positionsTb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3nodeName Tff7b72= Te6edf3stateTb4b4b4.Te6edf3nodeTff7b72?.Te6edf3userTff7b72?.Te6edf3long_name Tff7b72?: Ta5d6ff"Ta5d6ff"
Tff7b72val Te6edf3exportGpxLauncher Tff7b72= Te6edf3rememberSaveFileLauncher Tb4b4b4{ Te6edf3uri Tff7b72-Tff7b72> Te6edf3viewModelTb4b4b4.Te6edf3savePositionGpxTb4b4b4(Te6edf3uriTb4b4b4, Te6edf3positionsTb4b4b4, Te6edf3nodeNameTb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3trackMap Tff7b72= Te6edf3LocalNodeTrackMapProviderTb4b4b4.Te6edf3current
Tff7b72val Te6edf3destNum Tff7b72= Te6edf3stateTb4b4b4.Te6edf3nodeTff7b72?.Te6edf3num Tff7b72?: T79c0ff0
Te6edf3BaseMetricScreenTb4b4b4(
Te6edf3onNavigateUp Tff7b72= Te6edf3onNavigateUpTb4b4b4,
Te6edf3telemetryType Tff7b72= Tff7b72nullTb4b4b4,
Te6edf3titleRes Tff7b72= Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3position_logTb4b4b4,
Te6edf3nodeName Tff7b72= Te6edf3nodeNameTb4b4b4,
Te6edf3data Tff7b72= Te6edf3positionsTb4b4b4,
Te6edf3timeProvider Tff7b72= Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3timeTb4b4b4.Te6edf3toDoubleTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3onExportCsv Tff7b72= Tb4b4b4{ Te6edf3exportPositionLauncherTb4b4b4(Ta5d6ff"Ta5d6ffposition.csvTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftext/csvTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3extraActions Tff7b72= Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3positionsTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3exportGpxLauncherTb4b4b4(Ta5d6ff"Ta5d6fftrack.gpxTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffapplication/gpx+xmlTa5d6ff"Tb4b4b4) Tb4b4b4}Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(
Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3FileDownloadTb4b4b4,
Te6edf3contentDescription Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3export_gpxTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3clearPositionTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3DeleteTb4b4b4, Te6edf3contentDescription Tff7b72= Te6edf3stringResourceTb4b4b4(Te6edf3ResTb4b4b4.Te6edf3stringTb4b4b4.Te6edf3clearTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3stateTb4b4b4.Te6edf3isLocalTb4b4b4) Tb4b4b4{
Te6edf3IconButtonTb4b4b4(Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3requestPositionTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4) Tb4b4b4{
Te6edf3IconTb4b4b4(Te6edf3imageVector Tff7b72= Te6edf3MeshtasticIconsTb4b4b4.Te6edf3RefreshTb4b4b4, Te6edf3contentDescription Tff7b72= Tff7b72nullTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3chartPart Tff7b72= Tb4b4b4{ Te6edf3modifierTb4b4b4, Te6edf3selectedXTb4b4b4, Te6edf3_Tb4b4b4, Te6edf3onPointSelected Tff7b72-Tff7b72>
Tff7b72val Te6edf3selectedTime Tff7b72= Te6edf3selectedXTff7b72?.Te6edf3toIntTb4b4b4(Tb4b4b4)
Te6edf3trackMapTb4b4b4(Te6edf3destNumTb4b4b4, Te6edf3positionsTb4b4b4, Te6edf3modifierTb4b4b4, Te6edf3selectedTimeTb4b4b4) Tb4b4b4{ Te6edf3time Tff7b72-Tff7b72> Te6edf3onPointSelectedTb4b4b4(Te6edf3timeTb4b4b4.Te6edf3toDoubleTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3listPart Tff7b72= Tb4b4b4{ Te6edf3modifierTb4b4b4, Te6edf3selectedXTb4b4b4, Te6edf3lazyListStateTb4b4b4, Te6edf3onCardClick Tff7b72-Tff7b72>
Te6edf3LazyColumnTb4b4b4(Te6edf3modifier Tff7b72= Te6edf3modifierTb4b4b4.Te6edf3fillMaxSizeTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3state Tff7b72= Te6edf3lazyListStateTb4b4b4) Tb4b4b4{
Te6edf3itemsIndexedTb4b4b4(
Te6edf3positionsTb4b4b4,
Te6edf3key Tff7b72= Tb4b4b4{ Te6edf3indexTb4b4b4, Te6edf3position Tff7b72-Tff7b72> Ta5d6ff"Tffd700${Te6edf3positionTb4b4b4.Te6edf3timeTffd700}Ta5d6ff_Tffd700$Te6edf3indexTa5d6ff" Tb4b4b4}Tb4b4b4,
Te6edf3contentType Tff7b72= Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3_ Tff7b72-Tff7b72> Ta5d6ff"Ta5d6ffposition_logTa5d6ff" Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tb4b4b4{ Te6edf3_Tb4b4b4, Te6edf3position Tff7b72-Tff7b72>
Te6edf3PositionCardTb4b4b4(
Te6edf3position Tff7b72= Te6edf3positionTb4b4b4,
Te6edf3displayUnits Tff7b72= Te6edf3stateTb4b4b4.Te6edf3displayUnitsTb4b4b4,
Te6edf3isSelected Tff7b72= Te6edf3positionTb4b4b4.Te6edf3timeTb4b4b4.Te6edf3toDoubleTb4b4b4(Tb4b4b4) Tff7b72=Tff7b72= Te6edf3selectedXTb4b4b4,
Te6edf3onClick Tff7b72= Tb4b4b4{ Te6edf3onCardClickTb4b4b4(Te6edf3positionTb4b4b4.Te6edf3timeTb4b4b4.Te6edf3toDoubleTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.05s